package com.ktgj.customer.domain;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ktgj.customer.domain.vo.BusinessOrdersVo;
import com.ktgj.customer.domain.vo.PurchaseCardVo;
import com.ktgj.pay.api.domain.InvoiceInvoiceOrderApi;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ktgj.common.core.annotation.Excel;
import com.ktgj.common.core.web.domain.BaseEntity;

/**
 * 会员基本信息对象 customer
 * 
 * @author ruoyi
 * @date 2021-07-30
 */
public class Customer extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    public Customer() {
        lstCustomerRight = new ArrayList<>();
        commonAddresses = new ArrayList<>();
        commonReimbursements = new ArrayList<>();
        commonTravelers = new ArrayList<>();
        bankCard = new ArrayList<>();
        contactInformations =new ArrayList<>();
        invoiceInvoiceOrderApis=new ArrayList<>();
    }
    /** 客户基本信息ID */
    private Long customerId;

    private String type;

    /** 登录设备 未设置=0;web=10;wap=20;ios=30;Android=40 */
    @Excel(name = "登录设备 未设置=0;web=10;wap=20;ios=30;Android=40")
    private Long sourceway;

    /** 预留款使用密码
             */
    @Excel(name = "预留款使用密码")
    private String depositUsePwd;

    /** 预留款免密金额 */
    @Excel(name = "预留款免密金额")
    private Long depositSkipPwdAmount;

    /** 微信号
             */
    @Excel(name = "微信号")
    private String wechatId;

    /** 设备号
             */
    @Excel(name = "设备号")
    private String registrationid;

    /** 会员头像
             */
    @Excel(name = "会员头像")
    private String avatar;

    /** 网络会员密码MD5 登录密码
             */
    @Excel(name = "网络会员密码MD5 登录密码")
    private String custLoginPswmd5;

    /** 客户常用名
             */
    @Excel(name = "客户常用名")
    private String customerName;

    /** 性别 1女 2男
             */
    @Excel(name = "性别 1女 2男")
    private String customerSex;

    /** 阳历生日日期
             */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "阳历生日日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date birthday;

    /** 人会时间
             */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "人会时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date isMemberTime;

    /** 录入员
             */
    @Excel(name = "录入员")
    private Long employeeIdInput;

    /** 联系人电话1 */
    @Excel(name = "联系人电话1")
    private String contractPhoneOne;

    /** 联系人电话2 */
    @Excel(name = "联系人电话2")
    private String contractPhoneTow;

    /** 联系人电子邮箱 */
    @Excel(name = "联系人电子邮箱")
    private String contractEmail;

    /** 联系方式
             */
    @Excel(name = "联系方式")
    private String custContactmeans;

    /** 联系方式说明
             */
    @Excel(name = "联系方式说明")
    private String custContactmeansMemo;

    /** 证件类型ID：
            无证件
            其他证件
            身份证
            军人证
            护照
            港澳居民来往内地通行证
            台湾居民来往大陆通行证
            港澳台居民居住证
            外国人永久居留身份证
            港澳通行证
            户口本
            出生证明
            台湾通行证
             */
    @Excel(name = "证件类型")
    private String idType;

    /**
     * 证件类型2
     */
    private String idTypeTow;

    /** 证件号码
            证件号码
             */
    @Excel(name = "证件号码")
    private String custCertificateNo;

    /**
     * 证件号码2
     */
    private String custCertificateNoTow;

    /** 证件有效期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "证件有效期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date invalidDate;

    /** openId */
    @Excel(name = "openId")
    private String openId;

    /** 昵称 */
    @Excel(name = "昵称")
    private String nickName;

    /** 金币 */
    @Excel(name = "金币")
    private Long gold;

    /** 积分 */
    @Excel(name = "积分")
    private Long integral;

    /** 优惠券数量 */
    @Excel(name = "优惠券数量")
    private Long couponNum;

    /** token */
    @Excel(name = "token")
    private String token;

    /** 12306账号 */
    @Excel(name = "12306账号")
    private String trainAccount;

    /** 12306密码 */
    @Excel(name = "12306密码")
    private String trainPassword;

    /** 常住地 */
    @Excel(name = "常住地")
    private String permanentResidence;

    /** 备注 */
    @Excel(name = "备注")
    private String customerRemark;

    /** 是否有效期内 */
    @Excel(name = "证件有效期")
    private String expired;

    /** 职业 */
    @Excel(name = "职业")
    private String profession;

    /** 职务 */
    @Excel(name = "职务")
    private String jobTitle;

    /** 性格特征 */
    @Excel(name = "性格特征")
    private String characterTraits;

    /** 客户喜好 */
    @Excel(name = "客户喜好")
    private String customerPreferences;

    /** 民族 */
    @Excel(name = "民族")
    private String nationality;

    /** 婚姻情况 */
    @Excel(name = "婚姻情况")
    private String maritalStatus;

    /** 生肖 */
    @Excel(name = "生肖")
    private String chineseZodiac;

    /** 星座 */
    @Excel(name = "星座")
    private String constellation;

    /** 语种 */
    @Excel(name = "语种")
    private String language;

    /** 国籍 */
    @Excel(name = "国籍")
    private String countryCitizenship;

    /** 籍贯 */
    @Excel(name = "籍贯")
    private String hometown;

    /** 现住城市 */
    @Excel(name = "现住城市")
    private String currentCity;

    /** 会员等级 */
    @Excel(name = "会员等级")
    private Long membershipLevel;

    /** 血型 */
    @Excel(name = "血型")
    private String bloodType;

    /** 修改原因 */
    @Excel(name = "修改原因")
    private String modifyReason;

    /** 联系要求 */
    @Excel(name = "联系要求")
    private String contactRequest;

    /** 通讯地址 */
    @Excel(name = "通讯地址")
    private String mailingAddress;

    /**
     * 会员卡类别
     * */
    @Excel(name = "会员卡类别")
    private String cardType;

    //常用地址对象集合
    private List<CommonAddresses> commonAddresses;

    //常用报销凭证信息对象集合
    private List<CommonReimbursements> commonReimbursements;

    //常用旅客信息对象集合
    private List<CommonTravelers> commonTravelers;

    //银行卡信息对象集合
    private List<BankCard> bankCard;
    //联系方式对象集合
    private List<ContactInformation> contactInformations;
    //发票订单列表
    private List<InvoiceInvoiceOrderApi> invoiceInvoiceOrderApis;

    //保险记录
    private List<InsuranceRecord> insuranceRecordList;

    //投诉记录
    private List<CaseComplaint> caseComplaintList;

    //购卡记录
    private List<PurchaseCardVo> purchaseCardVoList;

    public String getCardType() {
        return cardType;
    }

    public void setCardType(String cardType) {
        this.cardType = cardType;
    }

    public String getMailingAddress() {
        return mailingAddress;
    }

    public void setMailingAddress(String mailingAddress) {
        this.mailingAddress = mailingAddress;
    }

    public String getContactRequest() {
        return contactRequest;
    }

    public void setContactRequest(String contactRequest) {
        this.contactRequest = contactRequest;
    }

    public String getExpired() {
        return expired;
    }

    public void setExpired(String expired) {
        this.expired = expired;
    }

    public String getProfession() {
        return profession;
    }

    public void setProfession(String profession) {
        this.profession = profession;
    }

    public String getJobTitle() {
        return jobTitle;
    }

    public void setJobTitle(String jobTitle) {
        this.jobTitle = jobTitle;
    }

    public String getCharacterTraits() {
        return characterTraits;
    }

    public void setCharacterTraits(String characterTraits) {
        this.characterTraits = characterTraits;
    }

    public String getCustomerPreferences() {
        return customerPreferences;
    }

    public void setCustomerPreferences(String customerPreferences) {
        this.customerPreferences = customerPreferences;
    }

    public String getNationality() {
        return nationality;
    }

    public void setNationality(String nationality) {
        this.nationality = nationality;
    }

    public String getMaritalStatus() {
        return maritalStatus;
    }

    public void setMaritalStatus(String maritalStatus) {
        this.maritalStatus = maritalStatus;
    }

    public String getChineseZodiac() {
        return chineseZodiac;
    }

    public void setChineseZodiac(String chineseZodiac) {
        this.chineseZodiac = chineseZodiac;
    }

    public String getConstellation() {
        return constellation;
    }

    public void setConstellation(String constellation) {
        this.constellation = constellation;
    }

    public String getLanguage() {
        return language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public String getCountryCitizenship() {
        return countryCitizenship;
    }

    public void setCountryCitizenship(String countryCitizenship) {
        this.countryCitizenship = countryCitizenship;
    }

    public String getHometown() {
        return hometown;
    }

    public void setHometown(String hometown) {
        this.hometown = hometown;
    }

    public String getCurrentCity() {
        return currentCity;
    }

    public void setCurrentCity(String currentCity) {
        this.currentCity = currentCity;
    }

    public Long getMembershipLevel() {
        return membershipLevel;
    }

    public void setMembershipLevel(Long membershipLevel) {
        this.membershipLevel = membershipLevel;
    }

    public String getBloodType() {
        return bloodType;
    }

    public void setBloodType(String bloodType) {
        this.bloodType = bloodType;
    }

    public String getModifyReason() {
        return modifyReason;
    }

    public void setModifyReason(String modifyReason) {
        this.modifyReason = modifyReason;
    }

    public List<PurchaseCardVo> getPurchaseCardVoList() {
        return purchaseCardVoList;
    }

    public void setPurchaseCardVoList(List<PurchaseCardVo> purchaseCardVoList) {
        this.purchaseCardVoList = purchaseCardVoList;
    }

    public List<CaseComplaint> getCaseComplaintList() {
        return caseComplaintList;
    }

    public void setCaseComplaintList(List<CaseComplaint> caseComplaintList) {
        this.caseComplaintList = caseComplaintList;
    }

    public List<InsuranceRecord> getInsuranceRecordList() {
        return insuranceRecordList;
    }

    public void setInsuranceRecordList(List<InsuranceRecord> insuranceRecordList) {
        this.insuranceRecordList = insuranceRecordList;
    }

    public String getPermanentResidence() {
        return permanentResidence;
    }

    public void setPermanentResidence(String permanentResidence) {
        this.permanentResidence = permanentResidence;
    }

    public List<InvoiceInvoiceOrderApi> getInvoiceInvoiceOrderApis() {
        return invoiceInvoiceOrderApis;
    }

    public void setInvoiceInvoiceOrderApis(List<InvoiceInvoiceOrderApi> invoiceInvoiceOrderApis) {
        this.invoiceInvoiceOrderApis = invoiceInvoiceOrderApis;
    }

    public List<ContactInformation> getContactInformations() {
        return contactInformations;
    }

    public void setContactInformations(List<ContactInformation> contactInformations) {
        this.contactInformations = contactInformations;
    }

    public String getCustomerRemark() {
        return customerRemark;
    }

    public void setCustomerRemark(String customerRemark) {
        this.customerRemark = customerRemark;
    }

    public Long getGold() {
        return gold;
    }

    public void setGold(Long gold) {
        this.gold = gold;
    }

    public Long getIntegral() {
        return integral;
    }

    public void setIntegral(Long integral) {
        this.integral = integral;
    }

    public Long getCouponNum() {
        return couponNum;
    }

    public void setCouponNum(Long couponNum) {
        this.couponNum = couponNum;
    }

    public List<CommonAddresses> getCommonAddresses() {
        return commonAddresses;
    }

    public void setCommonAddresses(List<CommonAddresses> commonAddresses) {
        this.commonAddresses = commonAddresses;
    }

    public List<CommonReimbursements> getCommonReimbursements() {
        return commonReimbursements;
    }

    public void setCommonReimbursements(List<CommonReimbursements> commonReimbursements) {
        this.commonReimbursements = commonReimbursements;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public List<CommonTravelers> getCommonTravelers() {
        return commonTravelers;
    }

    public void setCommonTravelers(List<CommonTravelers> commonTravelers) {
        this.commonTravelers = commonTravelers;
    }

    public List<BankCard> getBankCard() {
        return bankCard;
    }

    public void setBankCard(List<BankCard> bankCard) {
        this.bankCard = bankCard;
    }

    private List<CustomerRightdetail> lstCustomerRight;

    public List<CustomerRightdetail> getLstCustomerRight() {
        return lstCustomerRight;
    }

    public void setLstCustomerRight(List<CustomerRightdetail> lstCustomerRight) {
        this.lstCustomerRight = lstCustomerRight;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public void setCustomerId(Long customerId)
    {
        this.customerId = customerId;
    }

    public Long getCustomerId() 
    {
        return customerId;
    }
    public void setSourceway(Long sourceway) 
    {
        this.sourceway = sourceway;
    }

    public Long getSourceway()
    {
        return sourceway;
    }
    public void setDepositUsePwd(String depositUsePwd) 
    {
        this.depositUsePwd = depositUsePwd;
    }

    public String getDepositUsePwd() 
    {
        return depositUsePwd;
    }
    public void setDepositSkipPwdAmount(Long depositSkipPwdAmount) 
    {
        this.depositSkipPwdAmount = depositSkipPwdAmount;
    }

    public Long getDepositSkipPwdAmount() 
    {
        return depositSkipPwdAmount;
    }
    public void setWechatId(String wechatId) 
    {
        this.wechatId = wechatId;
    }

    public String getWechatId() 
    {
        return wechatId;
    }
    public void setRegistrationid(String registrationid) 
    {
        this.registrationid = registrationid;
    }

    public String getRegistrationid() 
    {
        return registrationid;
    }
    public void setAvatar(String avatar) 
    {
        this.avatar = avatar;
    }

    public String getAvatar() 
    {
        return avatar;
    }
    public void setCustLoginPswmd5(String custLoginPswmd5) 
    {
        this.custLoginPswmd5 = custLoginPswmd5;
    }

    public String getCustLoginPswmd5() 
    {
        return custLoginPswmd5;
    }
    public void setCustomerName(String customerName) 
    {
        this.customerName = customerName;
    }

    public String getCustomerName() 
    {
        return customerName;
    }
    public void setCustomerSex(String customerSex)
    {
        this.customerSex = customerSex;
    }

    public String getCustomerSex()
    {
        return customerSex;
    }
    public void setBirthday(Date birthday) 
    {
        this.birthday = birthday;
    }

    public Date getBirthday() 
    {
        return birthday;
    }
    public void setIsMemberTime(Date isMemberTime) 
    {
        this.isMemberTime = isMemberTime;
    }

    public Date getIsMemberTime() 
    {
        return isMemberTime;
    }
    public void setEmployeeIdInput(Long employeeIdInput) 
    {
        this.employeeIdInput = employeeIdInput;
    }

    public Long getEmployeeIdInput() 
    {
        return employeeIdInput;
    }
    public void setContractPhoneOne(String contractPhoneOne) 
    {
        this.contractPhoneOne = contractPhoneOne;
    }

    public String getContractPhoneOne() 
    {
        return contractPhoneOne;
    }
    public void setContractPhoneTow(String contractPhoneTow) 
    {
        this.contractPhoneTow = contractPhoneTow;
    }

    public String getContractPhoneTow() 
    {
        return contractPhoneTow;
    }
    public void setContractEmail(String contractEmail) 
    {
        this.contractEmail = contractEmail;
    }

    public String getContractEmail() 
    {
        return contractEmail;
    }
    public void setCustContactmeans(String custContactmeans) 
    {
        this.custContactmeans = custContactmeans;
    }

    public String getCustContactmeans() 
    {
        return custContactmeans;
    }
    public void setCustContactmeansMemo(String custContactmeansMemo) 
    {
        this.custContactmeansMemo = custContactmeansMemo;
    }

    public String getCustContactmeansMemo() 
    {
        return custContactmeansMemo;
    }
    public void setIdType(String idType)
    {
        this.idType = idType;
    }

    public String getIdType()
    {
        return idType;
    }
    public void setCustCertificateNo(String custCertificateNo) 
    {
        this.custCertificateNo = custCertificateNo;
    }

    public String getCustCertificateNo() 
    {
        return custCertificateNo;
    }
    public void setInvalidDate(Date invalidDate) 
    {
        this.invalidDate = invalidDate;
    }

    public String getOpenId() {
        return openId;
    }

    public void setOpenId(String openId) {
        this.openId = openId;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public Date getInvalidDate()
    {
        return invalidDate;
    }

    public String getTrainAccount() {
        return trainAccount;
    }

    public void setTrainAccount(String trainAccount) {
        this.trainAccount = trainAccount;
    }

    public String getTrainPassword() {
        return trainPassword;
    }

    public void setTrainPassword(String trainPassword) {
        this.trainPassword = trainPassword;
    }

    public String getIdTypeTow() {
        return idTypeTow;
    }

    public void setIdTypeTow(String idTypeTow) {
        this.idTypeTow = idTypeTow;
    }

    public String getCustCertificateNoTow() {
        return custCertificateNoTow;
    }

    public void setCustCertificateNoTow(String custCertificateNoTow) {
        this.custCertificateNoTow = custCertificateNoTow;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("customerId", getCustomerId())
            .append("sourceway", getSourceway())
            .append("depositUsePwd", getDepositUsePwd())
            .append("depositSkipPwdAmount", getDepositSkipPwdAmount())
            .append("wechatId", getWechatId())
            .append("registrationid", getRegistrationid())
            .append("avatar", getAvatar())
            .append("custLoginPswmd5", getCustLoginPswmd5())
            .append("customerName", getCustomerName())
            .append("customerSex", getCustomerSex())
            .append("birthday", getBirthday())
            .append("createTime", getCreateTime())
            .append("isMemberTime", getIsMemberTime())
            .append("employeeIdInput", getEmployeeIdInput())
            .append("contractPhoneOne", getContractPhoneOne())
            .append("contractPhoneTow", getContractPhoneTow())
            .append("contractEmail", getContractEmail())
            .append("custContactmeans", getCustContactmeans())
            .append("custContactmeansMemo", getCustContactmeansMemo())
            .append("idType", getIdType())
            .append("custCertificateNo", getCustCertificateNo())
            .append("invalidDate", getInvalidDate())
            .append("nickName", getNickName())
            .append("trainAccount", getTrainAccount())
            .append("trainPassword", getTrainPassword())
            .append("customerRemark",getCustomerRemark())
            .toString();
    }
}
